/*Define functions f (c h a r ), g (c h a r &), and h (c o n s t c h a r &). Call them with the arguments
    ´a ´, 4 9 , 3 3 0 0 , c , u c , and s c , where c is a c h a r , u c is an u n s i g n e d c h a r , and s c is a s i g n e d c h a r . Which calls are legal? Which calls cause the compiler to introduce a temporary variable?*/

#include <iostream>
using namespace std;
void f(char c)
{
    cout << "Entering: void f(char)" << endl;
}
void g(char& c)
{
    cout << "Entering: void g(char& c)" << endl;
}
void h(const char& cc)
{
    cout << "Entering void h(const char& cc)" << endl;
}

int main()
{
char c;
unsigned char uc;
signed char sc;

    f('a');
    f(49);
    f(uc);
    f(c);
    f(sc);

//    g('a');    
//    g(49);
    g(c);
//    g(uc);
//    g(sc);


    h('a');
    h(49);
    h(c);
    h(uc);
    h(sc);
}
